In [1]:
import numpy as np
import pandas as pd
In [3]:
confirmed_df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv')

deaths_df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv')

recoveries_df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_recovered_global.csv')

latest_data = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/11-15-2021.csv')

us_medical_data = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports_us/11-15-2021.csv')
In [4]:
confirmed_group_df = confirmed_df.groupby(by='Country/Region',as_index=False).sum()
deaths_group_df = deaths_df.groupby(by='Country/Region',as_index=False).sum()
recoveries_group_df = recoveries_df.groupby(by='Country/Region',as_index=False).sum()

active_group_df = pd.DataFrame(columns=[confirmed_group_df.columns])
active_group_df = deaths_group_df.copy()
for i in range(confirmed_group_df.shape[0]):
    for j in range(3, confirmed_group_df.shape[1]):
        active_group_df.iloc[i,j] = confirmed_group_df.iloc[i,j]-(recoveries_group_df.iloc[i,j]+deaths_group_df.iloc[i,j])
In [ ]:
!pip install plotly
In [5]:
import plotly.graph_objects as go
country_data = go.Figure()
country_data.add_trace(go.Table(
    header=dict(values=['Country','Confirmed','Active','Recovered','Deaths','Daily Increase','Mortality Rate'],
                fill = dict(color='#A5B3F3'),
                line_color='darkslategray',
                align = ['left'] * 5),
    cells=dict(values=[confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'], 
                      confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: confirmed_group_df[confirmed_group_df['Country/Region']==x][confirmed_group_df.columns[4:]].values.tolist()[0][-1]),
                      confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: active_group_df[active_group_df['Country/Region']==x][active_group_df.columns[4:]].values.tolist()[0][-1]),
                      confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: recoveries_group_df[recoveries_group_df['Country/Region']==x][recoveries_group_df.columns[4:]].values.tolist()[0][-600]),
                      confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: deaths_group_df[deaths_group_df['Country/Region']==x][deaths_group_df.columns[4:]].values.tolist()[0][-1]),
                      confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: confirmed_group_df[confirmed_group_df['Country/Region']==x][confirmed_group_df.columns[4:]].values.tolist()[0][-1]-confirmed_group_df[confirmed_group_df['Country/Region']==x][confirmed_group_df.columns[4:]].values.tolist()[0][-5]),
                      confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: (deaths_group_df[deaths_group_df['Country/Region']==x][deaths_group_df.columns[4:]].values.tolist()[0][-1]/confirmed_group_df[confirmed_group_df['Country/Region']==x][confirmed_group_df.columns[4:]].values.tolist()[0][-1])*100).round(decimals=3)
                      ],
               fill = dict(color='#F0FCFD'),
               line_color='darkslategray',
               align = ['left'] * 5)))

country_data.update_layout(
    #height=600, width=1100, 
    title_text="Country Stats for COVID 19",
                                     title_x=0.5, title_font_size=20,
                                     paper_bgcolor="mintcream")
country_data.show()
In [6]:
map_fit = go.Figure()
df_dict={
  "Confirmed": [confirmed_group_df,"blues",True],
  "Active": [active_group_df,"reds",False],
  "Recovered": [recoveries_group_df,"greens",False],
  "Deaths": [deaths_group_df,"gray_r",False],
  "Daily_inc": [None, "oranges", False]
}
for filter_name in ['Confirmed','Active','Recovered','Deaths']:

    map_fit.add_trace(go.Choropleth(locations=df_dict[filter_name][0]['Country/Region'],
                                       z=df_dict[filter_name][0][confirmed_group_df.columns[-1]],
                                       locationmode='country names', name=filter_name,
                                       colorscale=df_dict[filter_name][1], showscale=False,
                                       colorbar_title="# of Cases World wide", visible=df_dict[filter_name][2],
                                               hoverinfo = 'all',
                                       ))
    

map_fit.add_trace(go.Choropleth(locations=confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'],
                                       z=confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: confirmed_group_df[confirmed_group_df['Country/Region']==x][confirmed_group_df.columns[4:]].values.tolist()[0][-1]-confirmed_group_df[confirmed_group_df['Country/Region']==x][confirmed_group_df.columns[4:]].values.tolist()[0][-2]),
                                       locationmode='country names', name='Daily increase',
                                       colorscale=df_dict['Daily_inc'][1], showscale=False,
                                       colorbar_title="# of new Cases World Wide COVID19", visible=df_dict['Daily_inc'][2],
                                               hoverinfo = 'all',
                                       ))    
    
    
    
map_fit.update_layout(
    updatemenus=[
        dict(
        buttons=list(
            [dict(label = 'Confirmed',
                  method = 'update',
                  args = [{'visible': [True, False, False, False, False]},
                          {'title': 'Confirmed',
                           'showlegend':True}]),
             dict(label = 'Active',
                  method = 'update',
                  args = [{'visible': [False, True, False, False, False]},
                          {'title': 'Active',
                           'showlegend':True}]),
             dict(label = 'Recovered',
                  method = 'update',
                  args = [{'visible': [False, False, True, False, False]},
                          {'title': 'Recovered',
                           'showlegend':True}]),
             dict(label = 'Deaths',
                  method = 'update',
                  args = [{'visible': [False, False, False, True, False]},
                          {'title': 'Deaths',
                           'showlegend':True}]),
             dict(label = 'Daily Increase',
                  method = 'update',
                  args = [{'visible': [False, False, False, False, True]},
                          {'title': 'Daily Increase',
                           'showlegend':True}]),
            ]),
             type = "buttons",
             direction="right",
#             pad={"r": 10, "t": 40},
             showactive=True,
             x=-0.1,
             xanchor="left",
             y=1.1,
             yanchor="top"
        )
    ])

map_fit.update_xaxes(showticklabels=False)
map_fit.update_layout(
    #height=600, width=1100, 
    title_text="# of Cases World wide", title_x=0.5, title_font_size=20,
                            legend=dict(orientation='h',yanchor='top',y=1.12,xanchor='right',x=1), paper_bgcolor="mintcream")
map_fit.show()
In [7]:
# k-means here
from sklearn.cluster import KMeans
from sklearn.neighbors import NearestNeighbors
data={'Country': confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'], 
      'Confirmed':confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: confirmed_group_df[confirmed_group_df['Country/Region']==x][confirmed_group_df.columns[4:]].values.tolist()[0][-1]),
      'Active': confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: active_group_df[active_group_df['Country/Region']==x][active_group_df.columns[4:]].values.tolist()[0][-1]),
      'Recovered':confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: recoveries_group_df[recoveries_group_df['Country/Region']==x][recoveries_group_df.columns[4:]].values.tolist()[0][-600]),
      'Deaths': confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: deaths_group_df[deaths_group_df['Country/Region']==x][deaths_group_df.columns[4:]].values.tolist()[0][-1]),
      'Daily Increase': confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: confirmed_group_df[confirmed_group_df['Country/Region']==x][confirmed_group_df.columns[4:]].values.tolist()[0][-1]-confirmed_group_df[confirmed_group_df['Country/Region']==x][confirmed_group_df.columns[4:]].values.tolist()[0][-5]),
      'Mortality Rate': confirmed_group_df.sort_values(by=confirmed_group_df.columns[-1], ascending=False)['Country/Region'].apply(lambda x: (deaths_group_df[deaths_group_df['Country/Region']==x][deaths_group_df.columns[4:]].values.tolist()[0][-1]/confirmed_group_df[confirmed_group_df['Country/Region']==x][confirmed_group_df.columns[4:]].values.tolist()[0][-1])*100).round(decimals=3)
}
# print(data)
# columns=['Country','Confirmed','Active','Recovered','Deaths','Daily Increase','Mortality Rate']
df = pd.DataFrame(data)
# df.head()
k_means = KMeans(n_clusters = 3)
y = k_means.fit_predict(df[['Confirmed', 'Active', 'Recovered', 'Deaths', 'Daily Increase', 'Mortality Rate']])
df['Cluster'] = y
print(df.head())
            Country  Confirmed    Active  Recovered  Deaths  Daily Increase  \
182              US   49085361  48296998      52096  788363          394008   
79            India   34633255  34159929       1432  473326           26714   
23           Brazil   22143091  21527455      14026  615636           37219   
186  United Kingdom   10523316  10377261        368  146055          189644   
144          Russia    9630296   9354472       1986  275824          129460   

     Mortality Rate  Cluster  
182           1.606        1  
79            1.367        1  
23            2.780        2  
186           1.388        2  
144           2.864        2  
In [8]:
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.decomposition import PCA

# plot something via PCA. Can be modified further.
cluster_data = df.loc[:, ['Confirmed', 'Active', 'Deaths', 'Daily Increase', 'Mortality Rate']]
# print(cluster_data.head())
reduced_data = PCA(n_components=2).fit_transform(cluster_data)
results = pd.DataFrame(reduced_data,columns=['pca1','pca2'])

sns.scatterplot(x="pca1", y="pca2", hue=df['Cluster'], data=results)
plt.title('K-means Clustering with 2 dimensions')
sns.set(rc={'figure.figsize':(20, 10)})
sns.set(style='white')
sns.despine(bottom = True, left = True)
plt.legend(bbox_to_anchor=(1.02, 1), loc='upper left', borderaxespad=0, title = "Cluster")
plt.show()
In [9]:
df['Active Rate'] = df['Active'] / df['Confirmed'] * 100
df['Recovered Rate'] = df['Recovered'] / df['Confirmed'] * 100
df['Death Rate'] = df['Deaths'] / df['Confirmed'] * 100
df.head()
Out[9]:
Country Confirmed Active Recovered Deaths Daily Increase Mortality Rate Cluster Active Rate Recovered Rate Death Rate
182 US 49085361 48296998 52096 788363 394008 1.606 1 98.393894 0.106133 1.606106
79 India 34633255 34159929 1432 473326 26714 1.367 1 98.633319 0.004135 1.366681
23 Brazil 22143091 21527455 14026 615636 37219 2.780 2 97.219738 0.063343 2.780262
186 United Kingdom 10523316 10377261 368 146055 189644 1.388 2 98.612082 0.003497 1.387918
144 Russia 9630296 9354472 1986 275824 129460 2.864 2 97.135872 0.020622 2.864128
In [ ]:
df.describe()
In [10]:
import seaborn as sns
In [11]:
sns.kdeplot(df['Daily Increase'])
Out[11]:
<AxesSubplot:>
In [12]:
sns.kdeplot(df['Mortality Rate'])
Out[12]:
<AxesSubplot:>
In [13]:
sns.kdeplot(df['Active Rate'])
Out[13]:
<AxesSubplot:>
In [14]:
sns.kdeplot(df['Death Rate'])
Out[14]:
<AxesSubplot:>
In [15]:
%matplotlib inline
plt.style.use('ggplot')
sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 1.5})

g = plt.subplots(figsize=(20,9))
g = sns.lineplot(x='Country', y='Daily Increase', data=df[:15], palette='Blues_d')
plt.title('Daily Increase per top 15 country')
Out[15]:
Text(0.5, 1.0, 'Daily Increase per top 15 country')
In [16]:
%matplotlib inline
plt.style.use('ggplot')
sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 1.5})

g = plt.subplots(figsize=(20,9))
g = sns.lineplot(x='Country', y='Mortality Rate', data=df[:15], palette='Blues_d')
plt.title('Mortality Rate per top 15 country')
Out[16]:
Text(0.5, 1.0, 'Mortality Rate per top 15 country')
In [17]:
%matplotlib inline
plt.style.use('ggplot')
sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 1.5})

g = plt.subplots(figsize=(20,9))
g = sns.lineplot(x='Country', y='Active Rate', data=df[:15], palette='Blues_d')
plt.title('Active Rate per top 15 country')
Out[17]:
Text(0.5, 1.0, 'Active Rate per top 15 country')
In [18]:
%matplotlib inline
plt.style.use('ggplot')
sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 1.5})

g = plt.subplots(figsize=(20,9))
g = sns.lineplot(x='Country', y='Death Rate', data=df[:15], palette='Blues_d')
plt.title('Death Rate per top 15 country')
Out[18]:
Text(0.5, 1.0, 'Death Rate per top 15 country')
In [19]:
%matplotlib inline
plt.style.use('ggplot')
sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 1.5})

g = plt.subplots(figsize=(20,9))
g = sns.lineplot(x='Country', y='Recovered Rate', data=df[:15], palette='Blues_d')
plt.title('Recovered Rate per top 15 country')
Out[19]:
Text(0.5, 1.0, 'Recovered Rate per top 15 country')
In [ ]:
 
In [20]:
result = df.copy()
result.head()
Out[20]:
Country Confirmed Active Recovered Deaths Daily Increase Mortality Rate Cluster Active Rate Recovered Rate Death Rate
182 US 49085361 48296998 52096 788363 394008 1.606 1 98.393894 0.106133 1.606106
79 India 34633255 34159929 1432 473326 26714 1.367 1 98.633319 0.004135 1.366681
23 Brazil 22143091 21527455 14026 615636 37219 2.780 2 97.219738 0.063343 2.780262
186 United Kingdom 10523316 10377261 368 146055 189644 1.388 2 98.612082 0.003497 1.387918
144 Russia 9630296 9354472 1986 275824 129460 2.864 2 97.135872 0.020622 2.864128
In [21]:
# result = result[:15]
# result
result = result.reset_index()
result.head()
Out[21]:
index Country Confirmed Active Recovered Deaths Daily Increase Mortality Rate Cluster Active Rate Recovered Rate Death Rate
0 182 US 49085361 48296998 52096 788363 394008 1.606 1 98.393894 0.106133 1.606106
1 79 India 34633255 34159929 1432 473326 26714 1.367 1 98.633319 0.004135 1.366681
2 23 Brazil 22143091 21527455 14026 615636 37219 2.780 2 97.219738 0.063343 2.780262
3 186 United Kingdom 10523316 10377261 368 146055 189644 1.388 2 98.612082 0.003497 1.387918
4 144 Russia 9630296 9354472 1986 275824 129460 2.864 2 97.135872 0.020622 2.864128
In [23]:
from sklearn.preprocessing import StandardScaler

data = result[['Mortality Rate','Active Rate','Recovered Rate', 'Death Rate']]
sns.set(style="ticks")
sns.pairplot(data)
Out[23]:
<seaborn.axisgrid.PairGrid at 0x174933f60>
In [24]:
outliers_fraction=0.05
scaler = StandardScaler()
np_scaled = scaler.fit_transform(data)
data = pd.DataFrame(np_scaled).to_numpy()
print(data)
[[-2.07411919e-01  2.07364093e-01 -1.16557937e-01 -2.07364093e-01]
 [-2.99140697e-01  2.99255330e-01 -1.29132777e-01 -2.99255330e-01]
 [ 2.43172122e-01 -2.43275733e-01 -1.21833385e-01  2.43275733e-01]
 [-2.91080846e-01  2.91104453e-01 -1.29211403e-01 -2.91104453e-01]
 [ 2.75411525e-01 -2.75463299e-01 -1.27100107e-01  2.75463299e-01]
 [-4.88355290e-01  4.88272261e-01 -1.21785533e-01 -4.88272261e-01]
 [-2.47327370e-01  2.47128430e-01 -8.20655094e-02 -2.47128430e-01]
 [-1.85535181e-01  1.85513330e-01  1.46975922e-02 -1.85513330e-01]
 [-9.36987029e-03  9.19784630e-03 -2.92922157e-02 -9.19784630e-03]
 [ 1.44258797e-02 -1.44714382e-02 -1.28266720e-01  1.44714382e-02]
 [-1.73637306e-01  1.73476421e-01  3.82439368e-02 -1.73476421e-01]
 [ 1.84450352e-01 -1.84299220e-01 -3.77249305e-02  1.84299220e-01]
 [ 1.49140529e-01 -1.48955721e-01 -1.28545818e-01  1.48955721e-01]
 [ 4.73069771e-01 -4.73069038e-01 -1.28351103e-01  4.73069038e-01]
 [ 2.08043430e+00 -2.08036563e+00 -1.22927289e-01  2.08036563e+00]
 [ 7.19962426e-02 -7.18338655e-02 -1.27399420e-01  7.18338655e-02]
 [ 1.56816577e-01 -1.56781761e-01 -1.29161998e-01  1.56781761e-01]
 [ 3.15326977e-01 -3.15143460e-01 -1.27975256e-01  3.15143460e-01]
 [-1.55214790e-01  1.55151053e-01 -1.28107331e-01 -1.55151053e-01]
 [-5.47460862e-01  5.47387386e-01 -1.29404214e-01 -5.47387386e-01]
 [-3.82042020e-01  3.81866834e-01 -1.17373320e-01 -3.81866834e-01]
 [ 2.62121191e+00 -2.62136536e+00 -1.12562870e-01  2.62136536e+00]
 [-2.47327370e-01  2.47159415e-01 -1.25136396e-01 -2.47159415e-01]
 [-4.48823641e-01  4.48689190e-01 -1.21039457e-01 -4.48689190e-01]
 [-3.83961032e-01  3.83981884e-01 -1.24839733e-01 -3.83981884e-01]
 [-2.53084407e-01  2.53233034e-01 -8.16973941e-02 -2.53233034e-01]
 [-1.93595032e-01  1.93430892e-01 -6.87637743e-02 -1.93430892e-01]
 [ 4.03217731e-01 -4.03206957e-01 -1.21241970e-01  4.03206957e-01]
 [ 9.82025068e-03 -9.85304487e-03 -1.09215087e-01  9.85304487e-03]
 [-4.15816633e-01  4.15817509e-01 -1.23554076e-01 -4.15817509e-01]
 [-1.42549310e-01  1.42509077e-01 -1.29259570e-01 -1.42509077e-01]
 [-5.89679129e-01  5.89841960e-01 -1.03784166e-01 -5.89841960e-01]
 [-5.38909510e-02  5.38965728e-02 -1.28032128e-01 -5.38965728e-02]
 [ 3.43836055e-02 -3.42715946e-02 -1.13886716e-01  3.42715946e-02]
 [-4.61872923e-01  4.61843524e-01 -1.29642527e-01 -4.61843524e-01]
 [-3.61316689e-01  3.61296749e-01 -1.28129459e-01 -3.61296749e-01]
 [-3.43277975e-01  3.43461375e-01 -1.29642527e-01 -3.43461375e-01]
 [-4.13897620e-01  4.14008573e-01 -4.63405204e-02 -4.14008573e-01]
 [-2.13936560e-01  2.14036167e-01 -1.25595698e-01 -2.14036167e-01]
 [ 3.64069884e-01 -3.63997486e-01 -1.27556773e-01  3.63997486e-01]
 [-1.75172516e-01  1.75093594e-01 -1.26847910e-01 -1.75093594e-01]
 [-3.97777919e-01  3.97931711e-01  5.21034214e-02 -3.97931711e-01]
 [-3.61316689e-01  3.61279477e-01 -1.26484488e-01 -3.61279477e-01]
 [-8.49789469e-02  8.51618280e-02 -1.26210241e-01 -8.51618280e-02]
 [-4.92577116e-01  4.92665718e-01 -1.27709590e-01 -4.92665718e-01]
 [-2.26602040e-01  2.26723813e-01 -1.26672575e-01 -2.26723813e-01]
 [-2.76112552e-01  2.76270328e-01 -1.28630941e-01 -2.76270328e-01]
 [-2.85323810e-01  2.85314412e-01 -1.29627540e-01 -2.85314412e-01]
 [-7.12879705e-01  7.12729837e-01 -1.12470070e-01 -7.12729837e-01]
 [ 5.33326751e-01 -5.33159073e-01 -1.28904651e-01  5.33159073e-01]
 [ 7.50942723e-01 -7.51014456e-01 -1.27801574e-01  7.51014456e-01]
 [-3.27542076e-01  3.27641143e-01 -1.28098752e-01 -3.27641143e-01]
 [-5.25200322e-01  5.25332853e-01 -1.25872383e-01 -5.25332853e-01]
 [-1.41397903e-01  1.41503200e-01 -1.20401632e-01 -1.41503200e-01]
 [ 1.66027835e-01 -1.66032550e-01 -1.29264631e-01  1.66032550e-01]
 [-3.11038572e-01  3.11078395e-01 -1.21291109e-01 -3.11078395e-01]
 [-4.55348282e-01  4.55196836e-01 -1.28045070e-01 -4.55196836e-01]
 [ 1.53746158e-01 -1.53894582e-01 -1.28274348e-01  1.53894582e-01]
 [-3.29077286e-01  3.29175074e-01 -1.28186712e-01 -3.29175074e-01]
 [-2.06644314e-01  2.06538475e-01 -1.08770519e-01 -2.06538475e-01]
 [ 5.33710553e-01 -5.33872999e-01 -1.29483712e-01  5.33872999e-01]
 [ 1.59837847e+00 -1.59831324e+00 -1.11391014e-01  1.59831324e+00]
 [ 5.77080227e-01 -5.77090704e-01 -1.29595509e-01  5.77090704e-01]
 [-6.03112213e-01  6.03101633e-01 -5.95686334e-02 -6.03101633e-01]
 [-2.76112552e-01  2.76129034e-01 -1.29411292e-01 -2.76129034e-01]
 [-2.33126681e-01  2.33009252e-01 -1.27789607e-01 -2.33009252e-01]
 [-5.10615830e-01  5.10786167e-01  6.70511905e-02 -5.10786167e-01]
 [ 5.41386602e-01 -5.41208029e-01 -1.29030444e-01  5.41208029e-01]
 [-4.23876483e-01  4.23741507e-01 -1.27959436e-01 -4.23741507e-01]
 [-3.65538516e-01  3.65523002e-01 -1.26496059e-01 -3.65523002e-01]
 [-3.50570221e-01  3.50534080e-01 -1.24912555e-01 -3.50534080e-01]
 [-5.95052362e-01  5.94986624e-01 -1.23500540e-01 -5.94986624e-01]
 [-4.28098310e-01  4.28070408e-01 -1.23365384e-01 -4.28070408e-01]
 [-2.36580903e-01  2.36588147e-01 -1.21278537e-01 -2.36588147e-01]
 [-6.21918532e-01  6.22024416e-01 -1.29481868e-01 -6.22024416e-01]
 [ 2.32809456e-01 -2.32685675e-01 -1.29349188e-01  2.32685675e-01]
 [-2.61528060e-01  2.61580746e-01 -1.29346636e-01 -2.61580746e-01]
 [-1.22591584e-01  1.22623224e-01 -1.29145701e-01 -1.22623224e-01]
 [ 1.42232085e-01 -1.42061650e-01 -1.23886550e-01  1.42061650e-01]
 [ 1.36656180e+00 -1.36669658e+00 -1.09647470e-01  1.36669658e+00]
 [ 4.16758515e-02 -4.16464532e-02 -1.18896134e-01  4.16464532e-02]
 [-3.05665338e-01  3.05549055e-01 -1.24340465e-01 -3.05549055e-01]
 [-6.76418475e-01  6.76309988e-01 -1.28255596e-01 -6.76309988e-01]
 [-6.31129790e-01  6.31217126e-01 -1.00222669e-01 -6.31217126e-01]
 [ 9.32481267e-01 -9.32622824e-01 -1.18391526e-01  9.32622824e-01]
 [-7.15566322e-01  7.15579533e-01 -9.97844010e-02 -7.15579533e-01]
 [-1.87454193e-01  1.87374926e-01 -1.27534522e-01 -1.87374926e-01]
 [-2.20353501e-02  2.21920723e-02 -1.27084532e-01 -2.21920723e-02]
 [-7.27848000e-01  7.27766607e-01 -1.09147560e-01 -7.27766607e-01]
 [-5.12918645e-01  5.12813796e-01 -1.23231545e-01 -5.12813796e-01]
 [-4.63791935e-01  4.63669522e-01 -6.65136233e-03 -4.63669522e-01]
 [ 5.25650702e-01 -5.25774152e-01 -1.24082562e-01  5.25774152e-01]
 [-2.91080846e-01  2.90885827e-01 -1.22289884e-01 -2.90885827e-01]
 [ 2.83855178e-01 -2.83858612e-01 -8.83668410e-02  2.83858612e-01]
 [-1.54447185e-01  1.54594108e-01 -1.27883936e-01 -1.54594108e-01]
 [-2.31975274e-01  2.32096687e-01 -1.14303035e-01 -2.32096687e-01]
 [-3.48267407e-01  3.48414627e-01 -1.29642527e-01 -3.48414627e-01]
 [-5.43622838e-01  5.43737272e-01 -1.22854478e-01 -5.43737272e-01]
 [-5.50915084e-01  5.50827953e-01 -1.10301387e-01 -5.50827953e-01]
 [-2.47327370e-01  2.47298451e-01 -1.24405387e-01 -2.47298451e-01]
 [-1.12996524e-01  1.12804565e-01 -1.24592871e-01 -1.12804565e-01]
 [-2.59609048e-01  2.59710520e-01 -1.25363606e-01 -2.59710520e-01]
 [ 9.58579832e-01 -9.58638205e-01 -1.26275495e-01  9.58638205e-01]
 [-3.33299112e-01  3.33439598e-01 -1.29480230e-01 -3.33439598e-01]
 [ 4.76140190e-01 -4.76282335e-01 -1.29553863e-01  4.76282335e-01]
 [-6.55309342e-01  6.55211897e-01 -1.23786091e-01 -6.55211897e-01]
 [-4.69548971e-01  4.69361128e-01 -1.28041677e-01 -4.69361128e-01]
 [ 2.33193259e-01 -2.33024264e-01 -1.29357578e-01  2.33024264e-01]
 [ 1.54513763e-01 -1.54539798e-01 -1.28483614e-01  1.54539798e-01]
 [ 1.20739150e-01 -1.20902756e-01 -1.19800780e-01  1.20902756e-01]
 [ 3.88249436e-01 -3.88129735e-01 -1.26555352e-01  3.88129735e-01]
 [ 8.41520094e-01 -8.41709235e-01  8.51044169e+00  8.41709235e-01]
 [-1.77475330e-01  1.77601881e-01 -1.10657657e-01 -1.77601881e-01]
 [-3.10654770e-01  3.10469075e-01 -1.23012623e-01 -3.10469075e-01]
 [-7.18252939e-01  7.18066466e-01 -1.27503359e-01 -7.18066466e-01]
 [ 1.87520771e-01 -1.87436902e-01 -1.26812093e-01  1.87436902e-01]
 [-4.51894060e-01  4.51715637e-01 -5.82040763e-02 -4.51715637e-01]
 [-7.24393778e-01  7.24270167e-01 -1.29488100e-01 -7.24270167e-01]
 [ 3.31830481e-01 -3.31687178e-01 -1.26524895e-01  3.31687178e-01]
 [ 1.54129960e-01 -1.54065546e-01 -9.79987144e-02  1.54065546e-01]
 [ 1.96732029e-01 -1.96596143e-01 -1.28697951e-01  1.96596143e-01]
 [ 6.04714001e-01 -6.04755249e-01 -1.29642527e-01  6.04755249e-01]
 [-3.85496241e-01  3.85506197e-01 -1.06909592e-01 -3.85506197e-01]
 [-9.53416123e-02  9.52662010e-02 -1.25203202e-01 -9.52662010e-02]
 [-3.14492794e-01  3.14664131e-01 -1.29642527e-01 -3.14664131e-01]
 [ 5.74117507e-02 -5.72910299e-02 -1.28192380e-01  5.72910299e-02]
 [ 1.36848082e+00 -1.36838089e+00 -1.28374666e-01  1.36838089e+00]
 [ 1.84450352e-01 -1.84510340e-01 -1.27566335e-01  1.84510340e-01]
 [ 9.05264584e-03 -8.92067915e-03 -1.21662071e-01  8.92067915e-03]
 [ 1.96836400e+00 -1.96850582e+00 -1.28508592e-01  1.96850582e+00]
 [-3.73982169e-01  3.73999006e-01 -1.16058842e-01 -3.73999006e-01]
 [-8.98606787e-03  8.80260805e-03 -1.29019218e-01 -8.80260805e-03]
 [-4.73386995e-01  4.73425884e-01 -1.29321892e-01 -4.73425884e-01]
 [ 1.87904573e-01 -1.88011030e-01 -1.27057951e-01  1.88011030e-01]
 [-5.37098197e-01  5.37040153e-01 -1.28326688e-01 -5.37040153e-01]
 [-2.29672459e-01  2.29803663e-01 -1.29642527e-01 -2.29803663e-01]
 [-3.40975161e-01  3.41074868e-01 -1.17221945e-01 -3.41074868e-01]
 [-9.95634389e-02  9.94717731e-02 -1.29642527e-01 -9.94717731e-02]
 [-4.69165169e-01  4.69227122e-01 -1.13238367e-01 -4.69227122e-01]
 [ 2.42788319e-01 -2.42728023e-01 -1.24480262e-01  2.42728023e-01]
 [-4.73770798e-01  4.73741269e-01 -1.22555866e-01 -4.73741269e-01]
 [ 2.99974880e-01 -3.00078422e-01 -1.29642527e-01  3.00078422e-01]
 [-5.75094637e-01  5.75257442e-01 -1.20717147e-01 -5.75257442e-01]
 [-6.17312903e-01  6.17241269e-01 -1.29642527e-01 -6.17241269e-01]
 [ 1.39227657e+00 -1.39232771e+00 -1.28572862e-01  1.39232771e+00]
 [ 3.44879763e-01 -3.44846060e-01 -1.26401757e-01  3.44846060e-01]
 [ 3.41425541e-01 -3.41424649e-01 -1.29642527e-01  3.41424649e-01]
 [-3.85880044e-01  3.85992445e-01 -9.15556490e-02 -3.85992445e-01]
 [-7.52411354e-01  7.52430335e-01 -1.29642527e-01 -7.52430335e-01]
 [-5.87760116e-01  5.87637666e-01 -1.29020759e-01 -5.87637666e-01]
 [-1.07623290e-01  1.07577058e-01 -1.22493728e-01 -1.07577058e-01]
 [-7.50492342e-01  7.50513840e-01  5.94609841e-01 -7.50513840e-01]
 [-5.42471431e-01  5.42489618e-01 -1.39565418e-02 -5.42489618e-01]
 [ 5.00319743e-01 -5.00175740e-01 -1.06245006e-01  5.00175740e-01]
 [-5.49379875e-01  5.49534097e-01 -1.29642527e-01 -5.49534097e-01]
 [-3.50186419e-01  3.49987526e-01 -1.26784424e-01 -3.49987526e-01]
 [ 1.13052332e+00 -1.13070290e+00 -3.78382235e-02  1.13070290e+00]
 [-1.37943681e-01  1.37745331e-01  4.44965406e-02 -1.37745331e-01]
 [-5.76246044e-01  5.76108455e-01 -4.19650353e-02 -5.76108455e-01]
 [-3.29844891e-01  3.29890672e-01 -1.26016252e-01 -3.29890672e-01]
 [-2.92616056e-01  2.92468171e-01 -6.48425200e-02 -2.92468171e-01]
 [ 6.74983133e-03 -6.59076598e-03 -1.19237991e-01  6.59076598e-03]
 [-4.25027891e-01  4.25119407e-01 -1.29642527e-01 -4.25119407e-01]
 [-6.86781141e-01  6.86848216e-01  5.98146699e-01 -6.86848216e-01]
 [-4.93728524e-01  4.93657365e-01 -1.25442756e-01 -4.93657365e-01]
 [ 6.65689435e+00 -6.65694290e+00 -1.29642527e-01  6.65694290e+00]
 [ 4.89957077e-01 -4.89857295e-01 -1.27174867e-01  4.89857295e-01]
 [-5.09848225e-01  5.09871510e-01 -1.29642527e-01 -5.09871510e-01]
 [ 5.90897114e-01 -5.91066021e-01  2.70747979e-02  5.91066021e-01]
 [ 6.35525894e-02 -6.36448656e-02 -1.29642527e-01  6.36448656e-02]
 [-9.84120316e-02  9.83927541e-02 -1.29642527e-01 -9.83927541e-02]
 [-2.43105544e-01  2.43218239e-01 -2.33629620e-02 -2.43218239e-01]
 [-5.79316463e-01  5.79208139e-01 -1.13526933e-01 -5.79208139e-01]
 [ 4.75372586e-01 -4.75465666e-01 -1.29642527e-01  4.75465666e-01]
 [ 1.06757972e+00 -1.06753084e+00 -1.21175199e-01  1.06753084e+00]
 [ 3.94390275e-01 -3.94302883e-01 -1.25319038e-01  3.94302883e-01]
 [-3.04897733e-01  3.05046468e-01 -1.27450027e-01 -3.05046468e-01]
 [-3.37520939e-01  3.37468029e-01  6.43670942e-02 -3.37468029e-01]
 [ 4.43900787e-01 -4.43713812e-01 -1.29642527e-01  4.43713812e-01]
 [ 2.58908021e-01 -2.59032353e-01 -1.20723963e-01  2.59032353e-01]
 [-4.68013762e-01  4.68142100e-01 -9.15624361e-02 -4.68142100e-01]
 [-2.48094975e-01  2.48036110e-01 -1.29642527e-01 -2.48036110e-01]
 [-4.38460975e-01  4.38611345e-01 -1.29642527e-01 -4.38611345e-01]
 [-7.80045129e-01  7.80188875e-01 -1.20306345e-01 -7.80188875e-01]
 [-8.23798604e-01  8.23785872e-01 -1.29642527e-01 -8.23785872e-01]
 [-1.22975386e-01  1.23029446e-01  1.09347767e+01 -1.23029446e-01]
 [-8.23798604e-01  8.23785872e-01  7.83574480e-01 -8.23785872e-01]
 [-8.23798604e-01  8.23785872e-01 -1.29642527e-01 -8.23785872e-01]
 [ 7.70505876e+00 -7.70507867e+00 -1.29642527e-01  7.70507867e+00]
 [-8.23798604e-01  8.23785872e-01 -1.29642527e-01 -8.23785872e-01]
 [ 5.57303632e+00 -5.57286253e+00 -1.29642527e-01  5.57286253e+00]
 [-8.23798604e-01  8.23785872e-01 -1.29642527e-01 -8.23785872e-01]
 [-8.23798604e-01  8.23785872e-01 -1.29642527e-01 -8.23785872e-01]
 [-8.23798604e-01  8.23785872e-01 -1.29642527e-01 -8.23785872e-01]
 [-8.23798604e-01  8.23785872e-01 -1.29642527e-01 -8.23785872e-01]
 [-8.23798604e-01  8.23785872e-01 -1.29642527e-01 -8.23785872e-01]]
In [25]:
from tods.sk_interface.detection_algorithm.Telemanom_skinterface import TelemanomSKI
from tods.sk_interface.detection_algorithm.DeepLog_skinterface import DeepLogSKI
In [26]:
transformer_DL = DeepLogSKI()
transformer_DL.fit(data)
Epoch 1/10
6/6 [==============================] - 17s 252ms/step - loss: 0.8268 - val_loss: 5.1910
Epoch 2/10
6/6 [==============================] - 0s 7ms/step - loss: 0.5439 - val_loss: 5.1970
Epoch 3/10
6/6 [==============================] - 0s 8ms/step - loss: 0.3141 - val_loss: 5.2016
Epoch 4/10
6/6 [==============================] - 0s 7ms/step - loss: 0.5528 - val_loss: 5.2022
Epoch 5/10
6/6 [==============================] - 0s 7ms/step - loss: 0.5010 - val_loss: 5.2063
Epoch 6/10
6/6 [==============================] - 0s 8ms/step - loss: 0.7941 - val_loss: 5.2134
Epoch 7/10
6/6 [==============================] - 0s 8ms/step - loss: 0.7711 - val_loss: 5.2169
Epoch 8/10
6/6 [==============================] - 0s 7ms/step - loss: 0.7909 - val_loss: 5.2232
Epoch 9/10
6/6 [==============================] - 0s 8ms/step - loss: 0.5372 - val_loss: 5.2309
Epoch 10/10
6/6 [==============================] - 0s 7ms/step - loss: 0.3934 - val_loss: 5.2395
In [27]:
prediction_labels_DL = transformer_DL.predict(data)
/Users/wangyanghe/anaconda3/envs/tods2/lib/python3.6/site-packages/sklearn/utils/validation.py:933: FutureWarning:

Passing attributes to check_is_fitted is deprecated and will be removed in 0.23. The attributes argument is ignored.

In [28]:
prediction_score_DL = transformer_DL.predict_score(data)
/Users/wangyanghe/anaconda3/envs/tods2/lib/python3.6/site-packages/sklearn/utils/validation.py:933: FutureWarning:

Passing attributes to check_is_fitted is deprecated and will be removed in 0.23. The attributes argument is ignored.

In [29]:
print("Prediction Labels\n", prediction_labels_DL)
print("Prediction Score\n", prediction_score_DL)
Prediction Labels
 [[0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [1]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [0]
 [1]
 [1]
 [0]
 [1]
 [1]
 [1]
 [1]
 [0]
 [0]
 [0]
 [0]]
Prediction Score
 [[ 0.        ]
 [ 0.4892127 ]
 [ 0.46262159]
 [ 0.5008328 ]
 [ 0.51830758]
 [ 0.83981556]
 [ 0.38113594]
 [ 0.2957632 ]
 [ 0.0361277 ]
 [ 0.09337633]
 [ 0.29070159]
 [ 0.35423527]
 [ 0.28840224]
 [ 0.84052007]
 [ 3.6057504 ]
 [ 0.16451832]
 [ 0.30375328]
 [ 0.56892221]
 [ 0.27728804]
 [ 0.91976841]
 [ 0.61278621]
 [ 4.58252264]
 [ 0.54389946]
 [ 0.74387191]
 [ 0.62178237]
 [ 0.39657165]
 [ 0.29874384]
 [ 0.73467793]
 [ 0.08420787]
 [ 0.70074799]
 [ 0.21063801]
 [ 0.99210157]
 [ 0.05950551]
 [ 0.10571032]
 [ 0.78205642]
 [ 0.58235074]
 [ 0.55696237]
 [ 0.67732316]
 [ 0.3301914 ]
 [ 0.66777947]
 [ 0.31251315]
 [ 0.66639216]
 [ 0.58314109]
 [ 0.12010659]
 [ 0.82874242]
 [ 0.34874349]
 [ 0.44877445]
 [ 0.46177392]
 [ 1.19813799]
 [ 0.98184573]
 [ 1.30328123]
 [ 0.59101478]
 [ 0.87234897]
 [ 0.20022404]
 [ 0.32624166]
 [ 0.52933443]
 [ 0.75228441]
 [ 0.3161643 ]
 [ 0.56064219]
 [ 0.3208959 ]
 [ 0.96090663]
 [ 2.76801733]
 [ 0.96058586]
 [ 1.04926349]
 [ 0.4272176 ]
 [ 0.37204132]
 [ 0.85958375]
 [ 0.98928331]
 [ 0.74390009]
 [ 0.59147615]
 [ 0.56855452]
 [ 0.99153443]
 [ 0.69046264]
 [ 0.36853981]
 [ 1.04431327]
 [ 0.4582424 ]
 [ 0.45020247]
 [ 0.18769768]
 [ 0.28396639]
 [ 2.38505354]
 [ 0.13297386]
 [ 0.51335516]
 [ 1.1347399 ]
 [ 1.03754201]
 [ 1.66956578]
 [ 1.26341004]
 [ 0.26881111]
 [ 0.06745018]
 [ 1.237182  ]
 [ 0.83040346]
 [ 0.75857709]
 [ 0.95914598]
 [ 0.51518152]
 [ 0.52983862]
 [ 0.27370461]
 [ 0.3750709 ]
 [ 0.57232291]
 [ 0.90294401]
 [ 0.9049143 ]
 [ 0.38051154]
 [ 0.17117571]
 [ 0.42636008]
 [ 1.69768827]
 [ 0.61222867]
 [ 0.86662759]
 [ 1.13837164]
 [ 0.75921077]
 [ 0.45279002]
 [ 0.29493871]
 [ 0.23915402]
 [ 0.69548662]
 [ 8.66339627]
 [ 0.14868852]
 [ 0.50940127]
 [ 1.20670435]
 [ 0.3838343 ]
 [ 0.76799931]
 [ 1.20954786]
 [ 0.63337453]
 [ 0.28269959]
 [ 0.36802449]
 [ 1.06564945]
 [ 0.67871355]
 [ 0.13367655]
 [ 0.52202882]
 [ 0.15075007]
 [ 2.39256046]
 [ 0.3113587 ]
 [ 0.08816479]
 [ 3.43378037]
 [ 0.72765638]
 [ 0.06344853]
 [ 0.79982998]
 [ 0.37511394]
 [ 0.9198673 ]
 [ 0.35197376]
 [ 0.55870253]
 [ 0.14532956]
 [ 0.78640019]
 [ 0.46909065]
 [ 0.81306842]
 [ 0.56843467]
 [ 0.99086262]
 [ 1.01900604]
 [ 2.46489668]
 [ 0.57262961]
 [ 0.60670482]
 [ 0.66394213]
 [ 1.26193235]
 [ 0.95920524]
 [ 0.1398597 ]
 [ 1.42746068]
 [ 0.874799  ]
 [ 0.91773234]
 [ 0.95759745]
 [ 0.55824717]
 [ 1.9990507 ]
 [ 0.27045629]
 [ 0.96542908]
 [ 0.52081504]
 [ 0.46717624]
 [ 0.07280853]
 [ 0.71734301]
 [ 1.32859922]
 [ 0.78977247]
 [11.57750659]
 [ 0.68202994]
 [ 0.88916943]
 [ 1.07697995]
 [ 0.15416732]
 [ 0.17182615]
 [ 0.39403818]
 [ 0.96784102]
 [ 0.87606736]
 [ 1.85251702]
 [ 0.66822645]
 [ 0.5327284 ]
 [ 0.56184553]
 [ 0.81326549]
 [ 0.46090279]
 [ 0.80136764]
 [ 0.38670561]
 [ 0.72705333]
 [ 1.30741086]
 [ 1.36657062]
 [11.03704732]
 [ 1.50721577]
 [ 1.35237523]
 [13.4081347 ]
 [ 1.63688908]
 [ 9.71515161]
 [ 1.60755698]
 [ 1.36462369]
 [ 1.36462369]
 [ 1.36462369]
 [ 1.36462369]]
In [30]:
# create a new column for storing the results of DeepLog method
result['anomaly_DeepLog'] = pd.Series(prediction_labels_DL.flatten())
result['anomaly_DeepLog'] = result['anomaly_DeepLog'].apply(lambda x: x == 1)
result['anomaly_DeepLog'] = result['anomaly_DeepLog'].astype(int)
result['anomaly_DeepLog'].value_counts()
Out[30]:
0    176
1     20
Name: anomaly_DeepLog, dtype: int64
In [31]:
result.head(15)
Out[31]:
index Country Confirmed Active Recovered Deaths Daily Increase Mortality Rate Cluster Active Rate Recovered Rate Death Rate anomaly_DeepLog
0 182 US 49085361 48296998 52096 788363 394008 1.606 1 98.393894 0.106133 1.606106 0
1 79 India 34633255 34159929 1432 473326 26714 1.367 1 98.633319 0.004135 1.366681 0
2 23 Brazil 22143091 21527455 14026 615636 37219 2.780 2 97.219738 0.063343 2.780262 0
3 186 United Kingdom 10523316 10377261 368 146055 189644 1.388 2 98.612082 0.003497 1.387918 0
4 144 Russia 9630296 9354472 1986 275824 129460 2.864 2 97.135872 0.020622 2.864128 0
5 181 Turkey 8903087 8825257 5674 77830 82973 0.874 2 99.125809 0.063731 0.874191 0
6 62 France 8021237 7900718 30955 120519 192192 1.502 2 98.497501 0.385913 1.502499 0
7 66 Germany 6200937 6097813 72600 103124 201917 1.663 2 98.336961 1.170791 1.663039 0
8 81 Iran 6134465 6004265 49933 130200 12708 2.122 2 97.877566 0.813975 2.122434 0
9 6 Argentina 5340676 5224030 596 116646 8047 2.184 2 97.815894 0.011160 2.184106 0
10 164 Spain 5202958 5114799 70853 88159 28238 1.694 2 98.305598 1.361783 1.694402 0
11 85 Italy 5109082 4974887 38092 134195 65462 2.627 2 97.373403 0.745574 2.626597 0
12 37 Colombia 5081064 4952284 452 128780 9247 2.535 2 97.465491 0.008896 2.534509 0
13 80 Indonesia 4257685 4113818 446 143867 998 3.379 0 96.621004 0.010475 3.378996 0
14 115 Mexico 3901263 3606060 2125 295203 10045 7.567 0 92.433143 0.054470 7.566857 1
In [60]:
fig, ax = plt.subplots(figsize=(20,16))
#anomaly
a = result.loc[result['anomaly_DeepLog'] == 1]
ax.plot(result['Recovered Rate'], color='black', label = 'Recovered Rate', linewidth=1.5)
ax.scatter(a.index ,a['Recovered Rate'], color='red', label = 'Anomaly', s=40)
ax.plot(pd.Series(prediction_score_DL.flatten()*5), color='blue', label = 'Outlier Score', linewidth=0.5)

plt.legend()
plt.title("Anamoly Detection Using DeepLog")
plt.xlabel('Country Index')
plt.ylabel('Recovered Rate')
plt.show();
In [59]:
fig, ax = plt.subplots(figsize=(20,16))
#anomaly
a = result.loc[result['anomaly_DeepLog'] == 1]
ax.plot(result['Active Rate'], color='black', label = 'Active Rate', linewidth=1.5)
ax.scatter(a.index ,a['Active Rate'], color='red', label = 'Anomaly', s=40)
ax.plot(pd.Series(prediction_score_DL.flatten()*3), color='blue', label = 'Outlier Score', linewidth=0.5)

plt.legend()
plt.title("Anamoly Detection Using DeepLog")
plt.xlabel('Country Index')
plt.ylabel('Active Rate')
plt.show();
In [57]:
fig, ax = plt.subplots(figsize=(20,16))
#anomaly
a = result.loc[result['anomaly_DeepLog'] == 1]
ax.plot(result['Death Rate'], color='black', label = 'Death Rate', linewidth=1.5)
ax.scatter(a.index ,a['Death Rate'], color='red', label = 'Anomaly', s=40)
ax.plot(pd.Series(prediction_score_DL.flatten()*3), color='blue', label = 'Outlier Score', linewidth=0.5)

plt.legend()
plt.title("Anamoly Detection Using DeepLog")
plt.xlabel('Country Index')
plt.ylabel('Death Rate')
plt.show();
In [62]:
a
Out[62]:
index Country Confirmed Active Recovered Deaths Daily Increase Mortality Rate Cluster Active Rate Recovered Rate Death Rate anomaly_DeepLog
14 115 Mexico 3901263 3606060 2125 295203 10045 7.567 0 92.433143 0.054470 7.566857 1
21 138 Peru 2243415 2042036 3108 201379 5573 8.976 0 91.023551 0.138539 8.976449 1
61 52 Ecuador 526870 493620 780 33250 0 6.311 0 93.689145 0.148044 6.310855 1
79 53 Egypt 363162 342435 589 20727 3646 5.707 0 94.292630 0.162187 5.707370 1
84 21 Bosnia and Herzegovina 277228 264541 253 12687 1263 4.576 0 95.423622 0.091261 4.576378 1
102 0 Afghanistan 157445 150133 43 7312 86 4.644 0 95.355839 0.027311 4.644161 1
111 36 China 111741 106892 78311 4849 328 4.339 0 95.660501 70.082602 4.339499 1
126 171 Syria 48619 45842 5 2777 352 5.712 0 94.288241 0.010284 5.711759 1
129 166 Sudan 43489 40325 4 3164 260 7.275 0 92.724597 0.009198 7.275403 1
144 161 Somalia 23051 21720 2 1331 35 5.774 0 94.225847 0.008676 5.774153 1
151 78 Iceland 18333 18298 1077 35 278 0.191 0 99.809087 5.874652 0.190913 1
156 172 Taiwan* 16652 15804 124 848 43 5.092 0 94.907519 0.744655 5.092481 1
165 193 Yemen 10025 8071 0 1954 19 19.491 0 80.508728 0.000000 19.491272 1
174 100 Liberia 5824 5537 4 287 0 4.928 0 95.072115 0.068681 4.927885 1
185 48 Diamond Princess 712 699 639 13 0 1.826 0 98.174157 89.747191 1.825843 1
186 75 Holy See 27 27 2 0 0 0.000 0 100.000000 7.407407 0.000000 1
188 105 MS Zaandam 9 7 0 2 0 22.222 0 77.777778 0.000000 22.222222 1
189 134 Palau 8 8 0 0 0 0.000 0 100.000000 0.000000 0.000000 1
190 189 Vanuatu 6 5 0 1 0 16.667 0 83.333333 0.000000 16.666667 1
191 112 Marshall Islands 4 4 0 0 0 0.000 0 100.000000 0.000000 0.000000 1
In [63]:
a['Country']
Out[63]:
14                     Mexico
21                       Peru
61                    Ecuador
79                      Egypt
84     Bosnia and Herzegovina
102               Afghanistan
111                     China
126                     Syria
129                     Sudan
144                   Somalia
151                   Iceland
156                   Taiwan*
165                     Yemen
174                   Liberia
185          Diamond Princess
186                  Holy See
188                MS Zaandam
189                     Palau
190                   Vanuatu
191          Marshall Islands
Name: Country, dtype: object
In [75]:
fig = plt.figure(figsize=(20,20))
ax = fig.add_subplot(111, projection='3d')
#ax.set_zlabel("x_composite_3")
outlier_index=list(a.index)
ax.scatter(data[:, 0], data[:, 1], zs=data[:, 2], s=15, lw=1, label="inliers",c="gray")
# Plot x's for the ground truth outliers
ax.scatter(data[outlier_index,0],data[outlier_index,1], data[outlier_index,2],
           lw=10, s=15, c="red", label="outliers")
ax.legend()
plt.show()
In [ ]: